#include <gtest/gtest.h>

#include <stdio.h>
#include <time.h>
#include "sds.h"
sds getCurrentTimeISO8601() {
    // 获取当前时间
    time_t now;
    time(&now);
    // 将当前时间转换为 UTC 时间
    struct tm *utcTime = gmtime(&now);
    // 格式化为 ISO 8601
    return sdscatprintf(sdsnew(NULL), "%04d-%02d-%02dT%02d:%02d:%02dZ",
             utcTime->tm_year + 1900, // 年份从1900开始
             utcTime->tm_mon + 1,     // 月份从0开始
             utcTime->tm_mday,
             utcTime->tm_hour,
             utcTime->tm_min,
             utcTime->tm_sec);
}

TEST(MiscellaneousTest, current_time_iso8601)
{
    sds iso8601Time = getCurrentTimeISO8601();
    printf("len :%x\n", sdslen(iso8601Time));
    // 输出 ISO 8601 格式的时间
    printf("当前时间 (ISO 8601): %s\n", iso8601Time);
    sdsfree(iso8601Time);
}

static long getCurrentTimeNanos() {
    struct timespec ts;
    clock_gettime(CLOCK_REALTIME, &ts);
    return ts.tv_sec * 1000000000 + ts.tv_nsec;
}

static sds getAckChannel(){
    return sdscatprintf(sdsnew(NULL), "mqrpc_%lx", getCurrentTimeNanos());
}

TEST(MiscellaneousTest, current_time_nanoseconds) {
    // 输出当前时间（秒和纳秒）
    printf("当前时间: %s nanoseconds\n",getAckChannel());

}